#ifndef PBVP_CONTOUR3D_DATA_H
#define PBVP_CONTOUR3D_DATA_H

#include "geometrydata.h"

namespace PBVP {
	/// Contour3DData is GeometryData enhanced with additional attributes
	class Contour3DData : public GeometryData {
	public:
		/// Default Constructor
		Contour3DData();

		/// Destructor
		virtual ~Contour3DData() {}

		/// Get the inner volume of the geometry
		/**
		 * @return double 
		 */
		double innerVolume() const { return m_InnerVolume; }

		/// Get the outer volume of the surface
		/**
		 * @return double
		 */
		double outerVolume() const { return m_OuterVolume; }

		/// Set the innervolume of the geometry
		/**
		 * @param vol 
		 */
		void setInnerVolume(double vol) {
			m_InnerVolume = vol;
		}

		/// Set the outervolume of the geometry
		/**
		 * @param vol 
		 */
		void setOuterVolume(double vol) {
			m_OuterVolume = vol;
		}

		/// Add innervolume value to the geometry
		void addInnerVolume(double vol) {
			m_InnerVolume += vol;
		}


		/// Add outervolume value to the geometry
		void addOuterVolume(double vol) {
			m_OuterVolume += vol;
		}

		/// Get the surface area of the geometry
		/**
		 * @return double 
		 */
		double area() const { return m_Area; }

		/// Set the surface area of the geometry
		/**
		 * @param _area 
		 */
		void setArea(double _area) {
			m_Area = _area;
		}

		/// Add area value to the geometry
		void addArea(double area) {
			m_Area += area;
		}

	private:
		/// The volume of the region with f < isoval
		double m_InnerVolume;
		/// The volume of the region with f > isoval
		double m_OuterVolume;
		/// Surface area
		double m_Area;
	};
}
#endif